/**
 * ControlCategoria.java
 * @author Paulo Chang, Carnet 11076
 * @author Oscar Castañeda, Carnet 11086
 * @author Francisco Martínez, Carnet 11096
 * @since 30/10/2011
 * Modificado por última vez el 06/11/2011.
 * Descripción: Clase que permite llevar un control sobre las categorías existentes
 * en el programa.
 */


import java.util.ArrayList;
import java.io.Serializable;


public class ControlCategoria implements Serializable{
    
    //Atributos
    private ArrayList<String> listaCategorias; //Lista con los nombres de las categorías existentes en el programa.
    
    //Métodos
    
    /**
     * Permite inicializar una instancia del objeto, el cual cuenta con una
     * lista de categorías existenes vacías.
     */
    public ControlCategoria(){
        listaCategorias=new ArrayList<String>();
    }
    
    /**
     * Permite saber si una categoría con cierto nombre existe o no.
     * @param nuevoNombre String con el nombre de categoría que se desea verificar sí existe o no.
     * @return boolean que indica si la categoría existe (false) o no existe (true).
     */
    public boolean noExisteCategoria(String nuevoNombre){
        for(String categoria:listaCategorias){
            if(categoria.equals(nuevoNombre)){
                return false;
            }
        }return true;
    }
    
    /**
     * Permite obtener la lista de las categorías existentes en el programa.
     * @return ArrayList<String> Lista con los nombres de las categorías existentes.
     */
    public ArrayList<String> getListaCategorias() {
        return listaCategorias;
    }

    /**
     * Permite modificar la lista de las categorías existentes en el programa.
     * @param listaCategorias ArrayList<String> por el cual se reemplazará la lista con los
     * nombres de las categorías existentes.
     */
    public void setListaCategorias(ArrayList<String> listaCategorias) {
        this.listaCategorias = listaCategorias;
    }
    
    /**
     * Permite agregar una nueva categoría a la lista de categoría existentes.
     * @param categoria Categoria a agregar a la lista de existentes.
     */
    public void agregarCategoria(Categoria categoria){
        listaCategorias.add(categoria.getTituloBD());
    }
    
    /**
     * Permite eliminar una categoría de la lista con los nombres de las categorías existentes.
     * @param nombreCategoria  String con el nombre de la categoría a eliminar.
     */
    public void remove(String nombreCategoria){
        listaCategorias.remove(nombreCategoria);
    }
}
